home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / MP / kernel_switch / main.f < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.9 KB  |  96 lines

  1. c Copyright (C) 1993, Silicon Graphics, Inc.
  2. c All Rights Reserved.
  3. c
  4.       PROGRAM MAIN
  5.       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
  6. C---------------------------------------------------------
  7. C       DRIVER PROGRAM FOR INNER PRODUCT ROUTINE
  8. C------------------------------------------------------------ 
  9.       DIMENSION A(800,800),B(800,800),C(800,800)
  10.       REAL*4 T0,ETIME,TARRY(2)
  11.     DOUBLE PRECISION ALPHA,BETA
  12.  
  13.     character*80 evalue
  14.     integer charcmp
  15.  
  16.     ALPHA=1.0D0
  17.     BETA = 0.0D0
  18.  300  READ(5,*,END=999) MA,NA,MB,NB,MC,NC,IDUMP
  19.       PRINT *,'MA,NA,MB,NB,MC,NC,IDUMP = ',MA,NA,MB,NB,MC,NC,IDUMP
  20. C       setup jump table
  21.     call readenv('SGI_ISA',evalue,7,length)
  22.     if (length .eq. 0) then
  23.        print *,'error - set SGI_ISA environment variable'
  24.        stop
  25.     end if
  26.     if (charcmp(evalue,'mips1') .eq. 0) then
  27.          call setmips1()
  28.     else if (charcmp(evalue,'mips2') .eq. 0) then
  29.         call setmips2()
  30.     end if
  31.  
  32. C
  33. C
  34. C       GENERATE A,B
  35. C
  36.  
  37.        DO 100 I = 1, MA 
  38.     DO 100 J=1,NA
  39.  100    A(I,J) = 1.0D0
  40.        DO 200 I = 1, MB 
  41.     DO 200 J=1,NB
  42.  200    B(I,J) = 1.0D0
  43. C       DO 300 I = 1, MC 
  44. C    DO 300 J=1,NC
  45. C 300    C(I,J) = 1.0D0
  46. C
  47. C       INITIALIZE NUMBER OF COUNTS
  48. C
  49.         ICOUNT = 2 * MA * NA * NC * IDUMP
  50. C
  51. C       FIND SYSTEM ID AND # OF HEADS
  52. C
  53. C
  54. C       CALL MATRIX PRODUCT ROUTINE
  55.       T0 = ETIME(TARRY)
  56.     DO III=1,IDUMP
  57.     CALL BLOC_MPY('N','N',MC,NC,MB,ALPHA,A,800,B,800,BETA,C,800,
  58.      +    1)    
  59.     ENDDO
  60.       T0 = ETIME(TARRY) - T0
  61.  
  62. C
  63.  
  64. C      OUTPUT RESULTS
  65. C
  66. C      WRITE(6,9) S1,S2,S3,S4,S5,S6,S7
  67. C 9    FORMAT(' ******** THE INNER PRODUCT ARE ',6G15.7/1X,G15.7)
  68. C      IF(IDUMP .GT. 0) CALL MATPRT(MC,NC,C,800,800)
  69.       CTIME = 1.0
  70.       WRITE(6,20) CTIME,T0 
  71.   20  FORMAT(//'* CPU TIME FOR OUTER PRODUCT =',G15.7
  72.      + /'  WALL TIME FOR OUTER PRODUCT =',G15.7)
  73. C
  74. C     CALCULATE MEGAFLOPS
  75. C
  76.       WFLOPS = DFLOAT(ICOUNT)/1.D6/T0
  77.       WRITE(6,31)  WFLOPS
  78.  31   FORMAT(' MEGAFLOPS =',G15.7)
  79. C
  80.       GO TO 300
  81. C
  82.   999 STOP
  83.       END 
  84.